#ifndef MATRIZ_JOGO_H
#define MATRIZ_JOGO_H

#include <SDL/SDL.h>
#include "sprite.h"
#include "tetrimino.h"
#include "explosao.h"

#include <list>

using namespace std;

/******************************************************************************
    Objeto de um jogo de tetris. Contem a matriz de pecas, e contem a proxima
    peca a cair, e a que esta caindo. COntem 1 player.
******************************************************************************/
class MatrizJogo {
	public:
		//Player
		int player;

		//Tetriminos
		Tetrimino *t_atual;
		Tetrimino *t_next;

		//Matriz que representa o jogo realmente
		int matriz[23][10];
		
		//Surfaces pra diminuir os calculos
		SDL_Surface* amarelo;
		SDL_Surface* vermelho;
		SDL_Surface* laranja;
		SDL_Surface* azul;
		SDL_Surface* cinza;
		SDL_Surface* verde;
		SDL_Surface* roxo;
		SDL_Surface* bg;
		SDL_Surface* jogo;
		
		//Delays
		int delayQueda;
		int delayInput;
		int delayDown;
		
		bool rotacaoPress;
		
		//Lista de pecas voadoras, quando se completa uma linha
		std::list<Explosao*> explosao;
		
		//Lista de proximas pecas
        std::list<Tetrimino*> *pecas;
		
		//Pecas sendo enviadas e recebidas
		int atack;
		int dano;

        int vitima;

        //Coluna onde o dano nao sera lancado.
		int danoRow;
		
		//Indica fim de jogo
		int gameOver;
		MatrizJogo(int pos, std::list<Tetrimino*> *tetriminos);
		~MatrizJogo(void);
		void Draw(void);
		void Mover(int x, int y, int r);
		void Atualizar(Uint32 tempo);
		void FixaTetrimino(void);

};

#endif
